SQlite源码分析

缓存管理

       SQLite对每个打开的数据库文件维护一个单独的页面锁。如果一个线程打开相同文件两次以上,页面调度程序只在第一次打开调用时为该文件创建并初始化一个单独的页面缓存。如果两个以上的线程打开了相同的文件,对相同的文件会有多个独立的缓存。
       页面缓存驻留在一个应用程序的内存空间中。注意相同的页面可能会被本地操作系统缓存。当应用程序阅读来自任何文件的一部分数据时,操作系统通常首先进行它自身的数据拷贝然后才是应用程序中的拷贝。我们对操作系统是如何管理它的缓存不感兴趣。SQLite的页面缓存组织和管理是独立于那些本地操作系统的。
       页面缓存驻留在一个应用程序的内存空间中。注意相同的页面可能会被本地操作系统缓存。当应用程序阅读来自任何文件的一部分数据时,操作系统通常首先进行它自身的数据拷贝然后才是应用程序中的拷贝。SQLite的页面缓存组织和管理是独立于那些本地操作系统的。
       页面缓存的管理是由系统性能决定的。下面的子部分将讨论页面调度程序如何组织和维护页面缓存和缓存客户机如何读和更改缓存单元。